Deserialization এর জন্য @JsonAlias এর ব্যবহার

@JsonAlias Annotation - জ্যাকসন অ্যানোটেশন (Jackson Annotations) - Java Technologies

361

@JsonAlias Jackson এর একটি অ্যানোটেশন যা Deserialization প্রক্রিয়ার সময় JSON ফিল্ড নামের বিকল্প নাম বা alias নির্ধারণ করতে ব্যবহৃত হয়। এটি বিশেষত তখন প্রয়োজন যখন JSON ফাইলের মধ্যে একটি ফিল্ডের একাধিক সম্ভাব্য নাম থাকে।

@JsonAlias ব্যবহার করে আপনি একাধিক ফিল্ড নাম থেকে একটি নামের জন্য Deserialization করতে পারেন, যা আপনার Java Object-এর সঙ্গে ম্যাচ করে।


@JsonAlias এর মূল বৈশিষ্ট্য

  • Multiple Field Names: একই Java ফিল্ডের জন্য একাধিক সম্ভাব্য JSON ফিল্ড নাম।
  • Backward Compatibility: পুরনো এবং নতুন JSON ফরম্যাটে একসঙ্গে কাজ করার জন্য।
  • Graceful Handling: JSON ফাইলের বিভিন্ন ভেরিয়েন্ট থেকে ডেটা একত্রিত করতে সাহায্য করে।

@JsonAlias এর ব্যবহার

1. একাধিক JSON ফিল্ড নাম

যদি আপনার Java ক্লাসে এমন ফিল্ড থাকে যার জন্য JSON এ একাধিক নাম থাকতে পারে, তাহলে আপনি @JsonAlias ব্যবহার করতে পারেন।

কোড উদাহরণ:

import com.fasterxml.jackson.annotation.JsonAlias;

public class User {
    @JsonAlias({"user_id", "id"})
    private int id;

    @JsonAlias({"user_name", "name"})
    private String name;

    // Getters and Setters
}
Deserialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonAliasExample {
    public static void main(String[] args) throws Exception {
        String json = "{\"user_id\":1,\"user_name\":\"Rahim\"}";  // alias ব্যবহার করা হয়েছে

        ObjectMapper mapper = new ObjectMapper();
        User user = mapper.readValue(json, User.class);

        System.out.println("ID: " + user.getId());
        System.out.println("Name: " + user.getName());
    }
}
JSON Output:
ID: 1
Name: Rahim

এখানে user_id এবং id JSON ফিল্ডের নামগুলিকে একই id Java ফিল্ডের সঙ্গে মেপ করা হয়েছে, এবং একইভাবে user_name এবং name JSON ফিল্ডের নামগুলিকে name Java ফিল্ডের সঙ্গে মেপ করা হয়েছে।


@JsonAlias এবং Backward Compatibility

কখনো কখনো আপনার API বা JSON ফরম্যাটের নাম পরিবর্তন করতে হতে পারে। কিন্তু আপনি চাইবেন যাতে আগের JSON ফরম্যাটও সঠিকভাবে ডেসিরিয়ালাইজড হয়। এই ক্ষেত্রে @JsonAlias সহকারে পুরনো এবং নতুন নাম একই ফিল্ডে ম্যাপ করা সম্ভব।

কোড উদাহরণ:

import com.fasterxml.jackson.annotation.JsonAlias;

public class Product {
    @JsonAlias({"product_id", "prod_id"})
    private int id;

    @JsonAlias({"product_name", "name"})
    private String name;

    // Getters and Setters
}
Deserialization Example (পুরানো এবং নতুন নাম সমর্থন করবে):
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonAliasExample {
    public static void main(String[] args) throws Exception {
        String oldJson = "{\"prod_id\":1001,\"product_name\":\"Laptop\"}";  // পুরনো নাম
        String newJson = "{\"product_id\":1001,\"product_name\":\"Laptop\"}";  // নতুন নাম

        ObjectMapper mapper = new ObjectMapper();

        // পুরনো নাম দিয়ে Deserialization
        Product oldProduct = mapper.readValue(oldJson, Product.class);
        System.out.println("Old JSON - ID: " + oldProduct.getId() + ", Name: " + oldProduct.getName());

        // নতুন নাম দিয়ে Deserialization
        Product newProduct = mapper.readValue(newJson, Product.class);
        System.out.println("New JSON - ID: " + newProduct.getId() + ", Name: " + newProduct.getName());
    }
}
Output:
Old JSON - ID: 1001, Name: Laptop
New JSON - ID: 1001, Name: Laptop

এখানে পুরনো এবং নতুন JSON ফরম্যাট উভয়ের জন্য একই ফিল্ড নাম id এবং name Java ক্লাসে মেপ করা হয়েছে, এবং উভয়ই সফলভাবে ডেসিরিয়ালাইজড হয়েছে।


@JsonAlias এর অন্যান্য বৈশিষ্ট্য

  1. Multiple Aliases:
    • একাধিক alias ব্যবহার করা যায়, যেমন: @JsonAlias({"user_id", "id", "userIdentifier"}).
  2. Compatibility with @JsonProperty:
    • @JsonAlias @JsonProperty এর সঙ্গে একত্রে ব্যবহার করা যেতে পারে। যেখানে @JsonProperty মূল JSON ফিল্ড নাম এবং @JsonAlias বিকল্প নামের জন্য ব্যবহার করা হয়।

উদাহরণ:

import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;

public class User {
    @JsonProperty("user_id")
    @JsonAlias({"user_id", "id", "userIdentifier"})
    private int id;

    @JsonProperty("user_name")
    @JsonAlias({"user_name", "name"})
    private String name;

    // Getters and Setters
}

@JsonAlias এবং List বা Array-এর জন্য

@JsonAlias ব্যবহার করে Array বা List-এর জন্যও একাধিক নামের মেলবন্ধন করা সম্ভব।

উদাহরণ:

import com.fasterxml.jackson.annotation.JsonAlias;

import java.util.List;

public class Group {
    @JsonAlias({"group_members", "members"})
    private List<String> members;

    // Getter and Setter
}
Deserialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;

import java.util.Arrays;

public class JsonAliasListExample {
    public static void main(String[] args) throws Exception {
        String json = "{\"group_members\":[\"John\", \"Jane\", \"Bob\"]}";  // alias ব্যবহার করা হয়েছে

        ObjectMapper mapper = new ObjectMapper();
        Group group = mapper.readValue(json, Group.class);

        System.out.println("Group Members: " + group.getMembers());
    }
}
JSON Output:
Group Members: [John, Jane, Bob]

  1. @JsonAlias অ্যানোটেশনটি JSON ফিল্ডের একাধিক নামের জন্য কাস্টম Mapping করার জন্য ব্যবহৃত হয়, যা Deserialization এর সময় JSON থেকে Java Object-এ ডেটা ম্যাপ করতে সহায়তা করে।
  2. Backward Compatibility নিশ্চিত করার জন্য এটি খুবই কার্যকর, যেমন: একাধিক নামের মাধ্যমে আগের এবং নতুন ফরম্যাটের JSON ডেটা একইভাবে প্রসেস করা।
  3. এটি আপনাকে JSON ফাইলের বিভিন্ন সংস্করণের সমর্থন করতে এবং একই Java ক্লাসে JSON ফিল্ডগুলির নামের মধ্যে ভিন্নতা মোকাবেলা করতে সাহায্য করে।

@JsonAlias হল একটি শক্তিশালী টুল, যা JSON ফরম্যাটের নমনীয়তা এবং সামঞ্জস্যতা নিশ্চিত করে, বিশেষত যখন API পরিবর্তন বা আপগ্রেড করা হয়।

Content added By
Promotion

Are you sure to start over?

Loading...